Парсинг форм ======================== Формат данных, принимаемых функцией ``parseForm``: .. code-block:: [ { "key": "body_panel", "components": [ { "label": "Юридическое лицо", "key": "agreementLegalEntity", "properties": { "attribute": "_ECM_contracts:agreementLegalEntity" }, "type": "selectJournal", "input": true, "value": "" }, ... ] }, { "key": "footer_panel", "components": [ { "type": "columns", "columns": [ { "components": [ { "label": "Rework", "key": "outcome_Rework", "type": "button", "action": "submit" }, ... ] }, ... ] }, { "label": "Rework", "key": "outcome_Rework", "type": "button", "action": "submit" }, ... ] }, ... ] Получение элементов для отображения в списке свойств: * компоненты из массива первого уровня фильтруются по ключу ``"key": "body_panel"`` * перебираем элементы массива ``components``, фильтруем их по свойству ``"input": true`` * в случае если ``"type": "button"``, элемент отбирается для передачи в функцию рендера, для локализации используется атрибут ``label``; элементы с другими типами также отбираются для рендера, с тем отличием, что для локализации используется свойство ``attribute`` с обрезанным префиксом ``_ECM_`` * данные с формой связаны по ключу ``attribute`` * для отображения в интерфейсе используется свойство ``value``, которое в зависимости от ``type`` форматируется как строка или дата Получение элементов для отображения на панели согласования (кнопки): * компоненты из массива первого уровня фильтруются по ключу ``"key": "footer_panel"`` * перебираем элементы массива ``columns.components``, фильтруем их по свойству ``"type": "button"``; если встречаются элементы с типом ``columns``, необходимо отобрать первый элемент массива в свойстве ``components``; для локализации используется атрибут ``label`` * обработчик клика по кнопке ожидает значение из свойства ``label``